package Action;
//No he modificado nada
import Forms.ArbolInicioForm;
import beans.Nodo;
import beans.Pareja;
import hibernate.NodoBD;
import hibernate.ParejaBD;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 *
 * @author Jose
 */
public class AnadirMadreAction extends Action {

    @Override
    public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {



        //Capturamos el form de tipo ArbolInicioForm
        ArbolInicioForm nodoForm = (ArbolInicioForm) form;
        //Capturamos el bean Nodo
        Nodo madre = nodoForm.getNodo();
        //... y creamos un objeto NodoBD para añadir la madre
        NodoBD madreBd = new NodoBD(madre);
        //Si se seleccionó añadir
        Nodo hijo = (Nodo) request.getSession().getAttribute("nodoActual");
        //Componemos la fecha de nacimiento
        String dia = nodoForm.getDiaNacimiento();
        String mes = nodoForm.getMesNacimiento();
        String anyo = nodoForm.getAnyoNacimiento();
        Integer diaI, mesI, anyoI;
        diaI = new Integer(dia);
        mesI = new Integer(mes);
        anyoI = new Integer(anyo);
        Calendar fecha = new GregorianCalendar(anyoI, mesI, diaI);
        madre.setFechaNacimiento(fecha);
        //Añadimos a la madre el idArbol del hijo
        madre.setArbol(hijo.getArbol());

        //Añadimos la madre al madreBd y la añadimos en la BD
        madreBd.setNodo(madre);
        madreBd.anadir();

        Pareja padres = hijo.getPadres();
        ParejaBD parejaBd = new ParejaBD(padres);
        //Si no tenia padres, crea la pareja
        if (padres == null) {
            padres = new Pareja();
            parejaBd.anadir();
        } else//...si tenia la recupera
        {
            padres = parejaBd.recuperarPareja();
        }

        //Si la pareja se acaba de insertar, se añade también el hijo
        if (!padres.tieneHijo(hijo)) {
            parejaBd.anadirHijo(hijo);
        //Se añade la madre
        }
        parejaBd.anadirComponente2(madre);

        //Recuperamos el nodoActual modificado
        NodoBD nodoBd = new NodoBD(hijo);
        Nodo nodoModificado = nodoBd.recuperaNodo();
        request.getSession().setAttribute("nodoActual", nodoModificado);
        return map.findForward("ok");
    }
}
